Packet-switched communication has become commonplace in today's communication systems and applications. Presently, packet-switched communication is available in wireline and wireless networks for data and voice communication applications. Features of packet-switched communication may include the reservation of transmission capacity only for the duration of an actual data (e.g. application or voice data) transmission, thus enabling the sharing of common transmission capacity between a plurality of data transmission flows.
A prevailing protocol family used in packet-switched communication is the TCP/IP (Transmission Control Protocol/Internet Protocol) protocol family, where the TCP and IP protocols represent the core protocols of the protocol family. The TCP protocol is a connection-oriented protocol that may operate on a transport layer and provides reliable delivery, including flow and congestion control, of data packets between communication endpoints. The IP protocol is a connectionless protocol that may operate on a network layer and provides e.g. addressing and routing of data packets between endpoints. In some applications, some other transport protocol, such as for example SCTP (Stream Control Transmission Protocol) or UDP (User Datagram Protocol) is used on top of the IP protocol in stead of the TCP protocol.
IP networks may comprise communication endpoint nodes, such as client and server computers, that are connected to the IP network either directly or through a wireline or wireless access network, and intermediate nodes, or routers, that handle data traffic routing between the communication endpoints. Along with the expansion of the use of IP networks, as well as the increase of data traffic carried therein, a need for further development of the IP networks in particular and packet-switched networks in general, and for introduction of new features has emerged.
For example, modern IP networks may comprise intermediate network entities called middle-boxes for providing policy enforcement in IP networks. Such middle-boxes include e.g. firewalls, network address translators (NAT), network address/port translators (NAPT), and QoS (Quality of Service) policing devices. A firewall may be a network entity that controls traffic flow between computer networks, such as IP networks. NAT/NAPT is a network entity that e.g. separates a private computer network from a public network and provides a network address translation/mapping between private and public network addresses. A QoS policing device is a network entity that enforces QoS policies on data flows e.g. by providing access to transmission capacity according to priorities assigned to different data flows.
Middle-boxes typically maintain a particular state associated with data flows. For example, a NAT may maintain a mapping between a private network address and a public network address. Typically, in case a data flow becomes inactive, i.e. data packets belonging to said data flow cease to be transmitted, a middle-box maintains a state, such as a mapping between a private and a public network address, associated with an inactive data flow for a predetermined time period, after which state information is removed.
In case a middle-box clears a state associated with an inactive data flow (i.e. removes state information associated with the data flow) and transmission of data packets belonging to said previously inactive data flow is resumed, the resumed data transmission is most likely disrupted due to an error caused by the middle-box not being able to deliver data packets to the right destination. For example, if a NAT removes a mapping between a private and a public network address from its mapping table, the NAT will no longer be able to deliver data packets sent to the public network address of a device, as the device's private network address is no longer associated with the device's public network address. In order to avoid the expiry of a state associated with a data flow at a middle-box, a communication endpoint can occasionally send a dummy data packet belonging to the data flow to keep the data flow active. Typically, a communication endpoint is not aware of the length of the period of time for which a middle-box maintains a state for an inactive data flow, and therefore the endpoint may have to send the dummy keep-alive packets more often than necessary.